package com.hqully.smartfumehood.mapper;
import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.hqully.smartfumehood.entity.dto.DevErrorDto;
import org.apache.ibatis.annotations.Param;

import com.hqully.smartfumehood.entity.DevError;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

/**
 * <p>
 *     针对数据库表[dev_error]的操作
 * </p>
 * @entity {@link DevError}
 * @author liulingyu
 * @date 2022-04-14 10:26:10
 * @version 1.0
 */
@Mapper
public interface DevErrorMapper extends BaseMapper<DevError> {

    /**
     * <p>
     *     根据[queryVo]的参数条件查询设备异常
     * </p>
     * @date 2022/5/8 13:11 <br>
     * @author liulingyu <br>
     * @param query 查询参数
     * @return {@link PageInfo < DevErrorDto>} 设备异常DTO列表
     */
    List<DevErrorDto> findAllDevError(Map query);

    /**
     * <p>
     *     添加设备异常消息
     * </p>
     * @date 2022/5/8 13:12 <br>
     * @author liulingyu <br>
     * @param devError 设备异常消息实体类
     * @return {@link int}
     */
    Long addDevError(DevError devError);

    int bindUsers(@Param("users") List<Integer> users, @Param("msgId") long msgId);

    /**
     * <p>
     *     通过设备异常消息ID删除设备异常消息
     * </p>
     * @date 2022/5/8 13:13 <br>
     * @author liulingyu <br>
     * @param id 设备异常消息ID
     * @return {@link int}
     */
    int deleteDevErrorById(@Param("id") Long id);

    /**
     * <p>
     *     更新设备异常消息
     * </p>
     * @date 2022/5/8 13:14 <br>
     * @author liulingyu <br>
     * @param devError 设备异常消息
     * @return {@link int}
     */
    int updateDevError(DevError devError);

    /**
     * <p>
     *     根据用户名和设备异常消息ID更新该设备异常消息状态为已读
     * </p>
     * @date 2022/5/8 14:07 <br>
     * @author liulingyu <br>
     * @param id 设备异常消息ID
     * @param username 用户名
     * @return {@link int}
     */
    int haveRead(@Param("msgId") Long id, @Param("username") String username);

    /**
     * <p>
     *     更新设备异常消息状态为已处理
     * </p>
     * @date 2022/5/8 14:08 <br>
     * @author liulingyu <br>
     * @param id 设备异常消息ID
     * @return {@link int}
     */
    int haveProcessed(@Param("id") long id);


    /**
     * <p>
     *     根据[queryVo]的参数条件查询未读设备异常消息的数量
     * </p>
     * @date 2022/5/8 14:09 <br>
     * @author liulingyu <br>
     * @param query 查询参数
     * @return {@link int} 未读设备异常消息数量
     */
    int findUnread(Map query);

    DevError findUnProcessedErrorByDeviceId(@Param("deviceId") String deviceId);

}




